package com.qiaoba.module.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qiaoba.api.system.entity.vo.SysUserVO;
import com.qiaoba.module.system.entity.SysUser;
import com.qiaoba.module.system.entity.param.SysUserParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户 数据层
 *
 * @author ailanyin
 * @date 2023-09-13 20:58:23
 */
public interface SysUserMapper extends BaseMapper<SysUser> {

    /**
     * 用户列表
     *
     * @param param 条件
     * @return 列表
     */
    List<SysUserVO> selectVoList(@Param("param") SysUserParam param);

    /**
     * 校验用户名是否唯一
     *
     * @param userId   用户ID
     * @param username 登陆账号
     * @return 已存在的登陆账号
     */
    String checkUsernameUnique(String userId, String username);

    /**
     * 批量校验用户名是否唯一
     *
     * @param usernameList 用户名集合
     * @return 存在的第一条数据
     */
    String batchCheckUsernameUnique(@Param("list") List<String> usernameList);

    /**
     * 校验手机号是否唯一
     *
     * @param userId 用户ID
     * @param phone  手机号
     * @return 已存在的手机号
     */
    String checkPhoneUnique(String userId, String phone);

    /**
     * 批量校验手机号是否唯一
     *
     * @param phoneList 手机号集合
     * @return 存在的第一条数据
     */
    String batchCheckPhoneUnique(@Param("list") List<String> phoneList);

    /**
     * 校验邮箱号是否唯一
     *
     * @param userId 用户ID
     * @param email  邮箱
     * @return 已存在的邮箱
     */
    String checkEmailUnique(String userId, String email);

    /**
     * 批量校验邮箱是否唯一
     *
     * @param emailList 邮箱集合
     * @return 存在的第一条数据
     */
    String batchCheckEmailUnique(@Param("list") List<String> emailList);
}
